package org.jeecgframework.web.service;
import org.jeecgframework.core.common.model.json.AjaxJson;
import org.jeecgframework.core.common.model.json.DataGrid;
import org.jeecgframework.core.common.service.CommonService;
import org.jeecgframework.core.util.StringUtil;
import org.jeecgframework.web.system.pojo.base.CbsServiceAssignListEntity;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.Serializable;
import java.util.List;
import java.util.Map;

public interface CbsServiceAssignListServiceI extends CommonService{
	
 	<T> void delete(T entity);
 	
 	<T> Serializable save(T entity);
 	
 	<T> void saveOrUpdate(T entity);
 	
 	/**
	 * 默认按钮-sql增强-新增操作
	 * @param id
	 * @return
	 */
    boolean doAddSql(CbsServiceAssignListEntity t);
 	/**
	 * 默认按钮-sql增强-更新操作
	 * @param id
	 * @return
	 */
    boolean doUpdateSql(CbsServiceAssignListEntity t);
 	/**
	 * 默认按钮-sql增强-删除操作
	 * @param id
	 * @return
	 */
    boolean doDelSql(CbsServiceAssignListEntity t);

	/**
	 * 查找服务商商务
	 * @param orgCode
	 * @param roleCode
	 * @return
	 */
    List<Map<String,Object>> queryUsersByOrgCodeAndRoleCodeTp(List<String> orgCode, String roleCode);

	/**
	 * 根据工程师、区域工程师信息
	 * @param orgCode
	 * @param roleCode
	 * @return
	 */
    List<Map<String, Object>> queryUsersByOrgCodeAndRoleCode(List<String> orgCode, String roleCode);


	/**
	 * 判断服务单能否可以转派条件
	 * @param cbsServiceId
	 * @return
	 */
    public AjaxJson SendSingleServiceBusiness(String cbsServiceId);

	/**
	 * 获取用户组织code
	 * @param userId
	 * @param OrgName
	 * @return
	 */
	List<Map<String, Object>> getOrgByUserId(String userId,String OrgName);

	/**
	 * 根据服务单id查找，工程师详情数据
	 * @param ServiceId
	 * @return
	 */
	List<Map<String,Object>> getDetailOfEng(String ServiceId,String UserId);
	/**
	 * 根据服务单id查找，商务详情数据
	 * @param ServiceId
	 * @return
	 */
	List<Map<String,Object>> getDetailOfService(String ServiceId,String UserId);
	/**
	 * 根据服务单id查找，区域工程师详情数据
	 * @param ServiceId
	 * @return
	 */
	List<Map<String,Object>> getDetailOfDistrictService(String ServiceId,String UserId);
	/**
	 * 根据服务单id查找，故障照片
	 * @param ServiceId
	 * @return
	 */
	List<Map<String,Object>> getFileLogByServiceId(String ServiceId,String type);

	/**
	 * 根据用户id查找工程师未完成任务数量
	 * @param userId
	 * @return
	 */
	List<Map<String,Object>> getNumberByUserId(String userId);

	/*
	* 自动创建发货单
	* */
	void autoDoAdd(String applyId,String realName) throws Exception;

	/*
	* 商务服务单详情中的备件申请列表
	* */
	List<Object[]> findEquipmentList(String id);


	/**
	 * APP商务派单,添加事务处理
	 * @param planIds 服务单的id
	 * @param providerId 服务商id
	 * @param assignTouserId 接单人id
	 * @param assignToroleId 接单人角色id
	 * @param assignTorole 接单人角色名称
	 * @param reason 备注信息
	 * @return
	 */
	public AjaxJson findArgEngineerPeople(String planIds, String providerId, String assignTouserId,String assignToroleId,String assignTorole,String reason);

	/**
	 * <p>
	 *  服务商商务服务单列表查询
	 * </p>
	 *
	 * @author X On 2019/8/1 7:13 PM
	 */
    void queryFacilitatorData(HttpServletRequest request, HttpServletResponse response, DataGrid dataGrid);
}
